package org.jeecg.entity.charge;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecg.modules.system.entity.BaseEntity;
import org.jeecg.modules.system.entity.BaseUserEntity;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Description: 收费标准
 * @Author: jeecg-boot
 * @Date:   2019-07-31
 * @Version: V1.0
 */
@Data
@TableName("charge_standard")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="charge_standard对象", description="收费标准")
public class ChargeStandard extends BaseUserEntity {
    
	/**id*/
	@TableId(type = IdType.ID_WORKER_STR)
    @ApiModelProperty(value = "id")
	private String id;
	/**收费项目id*/
	@Excel(name = "收费项目id", width = 15)
    @ApiModelProperty(value = "收费项目id")
	private String itemId;
	/**收费项目代号*/
    @ApiModelProperty(value = "收费项编号")
	@TableField(exist = false)
	private String itemCode;
	/**收费项目名称*/
	@Excel(name = "收费项名称", width = 15)
    @ApiModelProperty(value = "收费项目名称")
	private String itemName;
	/**当前收费金额*/
	@Excel(name = "当前收费金额", width = 15)
    @ApiModelProperty(value = "当前收费金额")
	private BigDecimal feeCurrent;
	/**历史收费金额*/
	@Excel(name = "历史收费金额", width = 15)
    @ApiModelProperty(value = "历史收费金额")
	private String feeHistory;
	/**财务科目id*/
	@Excel(name = "财务科目id", width = 15)
    @ApiModelProperty(value = "财务科目id")
	private String subjectsId;
	/**财务科目名称*/
	@Excel(name = "财务科目名称", width = 15)
    @ApiModelProperty(value = "财务科目名称")
	@TableField(exist = false)
	private String subjectsName;
	/**
	 * 收费周期
	 */
	@Excel(name = "收费周期", width = 15)
	private Integer cycle;
	/**房间id*/
	@Excel(name = "房间id", width = 15)
    @ApiModelProperty(value = "房间id")
	private String roomId;
	/**楼宇id*/
	@Excel(name = "楼宇id", width = 15)
    @ApiModelProperty(value = "楼宇id")
	private String floorId;
	/**项目id*/
	@Excel(name = "项目id", width = 15)
    @ApiModelProperty(value = "项目id")
	private String projectId;
	/**计算方式 （0：按月收费 ， 1：单价乘以面积）区分收费标准的价格*/
	@Dict(dicCode = "computing_type")
    @ApiModelProperty(value = "计算方式 （0：按月收费 ， 1：单价乘以面积）区分收费标准的价格")
	private Integer computingType;
	/**单价*/
	@Excel(name = "单价(元)", width = 15)
    @ApiModelProperty(value = "单价")
	private String price;
	/**住户类型*/
	@Excel(name = "住户类型", width = 15)
    @ApiModelProperty(value = "住户类型")
	private String resident;
	/**计算单位 0:元1：角 2：分*/
	@Dict(dicCode = "unit_account")
    @ApiModelProperty(value = "计费精度")
	private Integer unitAccount;
	/**舍入模式 4:四舍五入，0:向上，1:向下*/
	@Excel(name = "舍入模式 4:四舍五入，0:向上，1:向下", width = 15)
	@ApiModelProperty(value = "舍入模式 4:四舍五入，0:向上，1:向下")
	@Dict(dicCode = "round_mode")
	private Integer roundMode;
	/**是否缴费全部完成后自动生成下一年账单：0否  1是*/
	@Excel(name = "是否自动生成", width = 15)
	@ApiModelProperty(value = "是否缴费全部完成后自动生成下一年账单：0否  1是")
	private String isAuto;
	/**remarks*/
	@Excel(name = "remarks", width = 15)
	@ApiModelProperty(value = "remarks")
	private String remarks;

	@TableField(exist = false)
	private String maxDate;
	/**
	 * 物业公司ID
	 */
	private String tenantId;

	/**
	 * 房间ID集合;
	 * */
	@TableField(exist = false)
	private List<String> roomIdList;

	/**
	 * 收费标准Id集合
	 * */
	@TableField(exist = false)
	private List<String> standardIds;

/**
 * 收费项目编号集合
 * */
	@TableField(exist = false)
	private List<String> feeCodeList;

	//初始收费日期 - 年月
	@TableField(exist = false)
	private String chargeTime;
	//费用开始时间 (年月日)
	@TableField(exist = false)
	private Date startDate;
	//费用截止时间 (年月日)
	@TableField(exist = false)
	private Date endDate;
	//业主租户id
	@TableField(exist = false)
	private String rentId;
	//业主租户名
	@TableField(exist = false)
	private String rentName;
	/**
	 * 导入字段
	 */
	@TableField(exist = false)
	@Excel(name = "项目名称", width = 15)
	private String projectName;
	@TableField(exist = false)
	@Excel(name = "楼宇名称", width = 15)
	private String floorName;
	@TableField(exist = false)
	@Excel(name = "房间名称", width = 15)
	private String roomName;
	@TableField(exist = false)
	@Excel(name = "计算方式", width = 15)
	private String computingTypeName;
	@TableField(exist = false)
	@Excel(name = "计费精度", width = 15)
	private String unitAccountName;
	@TableField(exist = false)
	@Excel(name = "创建人", width = 15)
	private String createName;
}
